package com.bls.cate.client;

import android.annotation.SuppressLint;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;

import com.blankj.utilcode.util.LogUtils;
import com.bls.blslib.base.BaseActivity;
import com.bls.cate.R;

import java.util.Objects;

import cn.jiguang.common.ClientConfig;
import cn.jiguang.common.resp.APIConnectionException;
import cn.jiguang.common.resp.APIRequestException;
import cn.jpush.api.JPushClient;
import cn.jpush.api.push.PushResult;
import cn.jpush.api.push.model.PushPayload;

/**
 * 　　  () 　　　  ()
 * 　　  ( ) 　　　( )
 * 　　  ( ) 　　　( )
 * 　　┏┛┻━━━┛┻┓
 * 　　┃　　　━　　　┃
 * 　　┃　┳┛　┗┳　┃
 * 　　┃　　　┻　　　┃
 * 　　┗━┓　　　┏━┛
 * 　　　　┃　　　┃
 * 　　　　┃　　　┗━━━┓
 * 　　　　┃　　　　　　　┣┓
 * 　　　　┃　　　　　　　┏┛
 * 　　　　┗┓┓┏━┳┓┏┛
 * 　　　　　┃┫┫　┃┫┫
 * 　　　　　┗┻┛　┗┻┛
 * ——————————————————
 * Created by BinglingSu on 2017/12/23.
 */

public class XGClientActivity extends BaseActivity {

    private EditText etContent;
    private Button button;

    @Override
    protected int getLayoutId() {
        return R.layout.activity_xg_client;
    }

    @Override
    protected void initView() {
        super.initView();

        etContent = findViewById(R.id.et_content);
        button = findViewById(R.id.btn_send);
    }

    @Override
    protected void initListener() {
        super.initListener();
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                new Thread(networkTask).start();
            }
        });
    }

    @SuppressLint("HandlerLeak")
    Handler handler = new Handler() {
        @Override
        public void handleMessage(Message msg) {
            super.handleMessage(msg);
            Bundle data = msg.getData();
            String val = data.getString("value");
            Log.i("mylog", "请求结果为-->" + val);
            // TODO
            // UI界面的更新等相关操作
        }
    };

    /**
     * 网络操作相关的子线程
     */
    Runnable networkTask = new Runnable() {

        @Override
        public void run() {
            // TODO
            // 在这里进行 http request.网络请求相关操作
            Message msg = new Message();
            Bundle data = new Bundle();
            data.putString("value", "请求结果");
            msg.setData(data);


            JPushClient jpushClient = new JPushClient("a21604b0af22cdd94f3dc217", "db6beb40bb036e457074070c", null, ClientConfig.getInstance());
            PushPayload payload = null;
            if (Objects.equals(etContent.getText().toString().trim(), ""))
                payload = PushPayload.alertAll("孙洁是个小傻瓜");
            else payload = PushPayload.alertAll(etContent.getText().toString().trim());

            try {
                PushResult result = jpushClient.sendPush(payload);
                LogUtils.i("Got result - " + result);

            } catch (APIConnectionException e) {
                // Connection error, should retry later
                LogUtils.i("Connection error, should retry later", e);
            } catch (APIRequestException e) {
                // Should review the error, and fix the request
                LogUtils.i("Should review the error, and fix the request", e);
                LogUtils.i("HTTP Status: " + e.getStatus());
                LogUtils.i("Error Code: " + e.getErrorCode());
                LogUtils.i("Error Message: " + e.getErrorMessage());
            }

            handler.sendMessage(msg);
        }
    };
}
